package com.agua.enturno.vista.paginas.turnos;

import com.agua.enturno.vista.EnTurnoSession;
import com.agua.enturno.vista.componentes.BootstrapPagingNavigator;
import com.agua.enturno.vista.dto.NotificacionDTO;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.PageableListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.PropertyModel;
import org.joda.time.format.DateTimeFormat;

import java.util.List;

public class NotificacionesDeUsuarioPanel extends Panel {

	private static final long serialVersionUID = 1L;

	private static final int PAGE_SIZE = 10;

	private List<NotificacionDTO> notificaciones;
	
	
	public NotificacionesDeUsuarioPanel(String id, List<NotificacionDTO> notificaciones) {
		super(id);
		this.notificaciones = notificaciones;
		this.setOutputMarkupId(true);
		
		PageableListView<NotificacionDTO> notificacionesListView = new PageableListView<NotificacionDTO>("notificaciones", new PropertyModel<List<NotificacionDTO>>(this, "notificaciones"), PAGE_SIZE) {

			private static final long serialVersionUID = 1L;

			@Override
			protected void populateItem(ListItem<NotificacionDTO> item) {
				
				NotificacionDTO notificacion = item.getModelObject();
				
				item.add(new Label("fecha", DateTimeFormat.mediumDateTime().print(notificacion.getFecha())));
				
				Label labelNuevaNotificacion = new Label("notificacion-nueva", "Nueva");
				
				if ( esNueva(notificacion) )
					labelNuevaNotificacion.setVisible(true);
				else
					labelNuevaNotificacion.setVisible(false);
				
				item.add(labelNuevaNotificacion);
				item.add(new Label("mensaje", notificacion.getMensaje()));
			}

			private boolean esNueva(NotificacionDTO notificacion) {
				
				EnTurnoSession session = (EnTurnoSession) getSession();
				return notificacion.getFecha().isAfter(session.getUsuario().getUltimoLogueo());
			}
		};
		
		add(notificacionesListView);
		add(new BootstrapPagingNavigator("notificaciones-navigator", notificacionesListView));
	}
	
	@Override
	public boolean isVisible() {
		return !notificaciones.isEmpty();
	}

}
